Release 10.1A: OpenEdge Development:
Debugging and Troubleshooting
Dynamic Object Tracking dialog box
The Dynamic Object Tracking dialog box lets you monitor the creation and destruction of dynamic object instances in a Progress 4GL application. Use this dialog box to locate dynamic object instances the application has created, no longer needs, and has not yet destroyed. These undeleted object instances might indicate a memory leak.
Access this dialog box by choosing Diagnostics
Monitor Dynamic Objects.
The Dynamic Object Tracking dialog box contains the following tabs:
- Control Monitoring tab — Lets you select the types of dynamic objects you want to monitor.
- View Objects tab — Lists the active dynamic object instances, based on the selected object types.
The Dynamic Object Tracking dialog box also contains the following buttons:
- The Start Monitoring button starts the object monitoring process. When processing begins, the label on this button changes to Restart Monitoring.
- The Stop Monitoring button stops the object monitoring process. When processing stops, the label on the Restart Monitoring button changes back to Start Monitoring.
- The Close button closes the Dynamic Object Tracking dialog box.
Control Monitoring tab
The Control Monitoring tab lets you select the types of dynamic objects you want to monitor. Figure 3–10 shows the Control Monitoring tab.
Figure 3–10: Dynamic Object Tracking dialog box with Control Monitoring tab
![]()
The Control Monitoring tab contains a treeview control that displays the types of dynamic objects you can monitor, organized within object categories.The following list shows the dynamic object types you can monitor, as they appear on the Control Monitoring tab:
- Database Objects
Note:
QUERY(excluding query handles for static queries)BUFFER(excluding buffer handles for static buffers)TEMP-TABLE(excluding table handles for static temp-tables)DATASETDATA-SOURCE —BUFFER-FIELDobjects are not listed, since an application has no control over their creation or destruction.- User Interface objects
- XML Objects
Note:
SOAP-FAULTandSOAP-FAULT-DETAILobjects are not listed, since an application has no control over their creation or destruction.- Other Objects
Note: For more information on these dynamic object types, see OpenEdge Development: Progress 4GL Reference .
ASYNC-REQUESTCALLCONTROL-FRAMEMEMPTR(any memory allocated for aMEMPTR)PROCEDURE(excluding handles, such asTHIS-PROCEDURE, for non-persistent procedures)SERVERSERVER-SOCKETSOCKETTo expand a category node, click the plus sign (+) next to the node. To collapse a category node, click the minus sign (–) next to the node.
You can select all object types within a category by selecting the check box at the category node level, whether or not the node is expanded. You also can select one or more individual object types within a category, after you expand the category node, by:
- Selecting the category node check box, which selects all object types within that category, and clearing the check box for each object type you want to exclude.
- Clearing the category node check box, which clears all object types within that category, and selecting the check box for each object type you want to include.
To begin tracking the creation and destruction of the object instances for the object types you selected, choose the Start Monitoring button. Then, use the View Objects tab to monitor the active object instances. An active object instance is an instance of a dynamic object the application has created, but not yet destroyed, since you started or restarted monitoring.
View Objects tab
The View Objects tab lists the active dynamic object instances based on the object types you selected in the Control Monitoring tab. The View objects includes the line of code where the object comes into being. The list is in order of object creation. Use this list to quickly determine what object needs to be deleted.
Active object instances are instances of dynamic objects the application has created, but not yet destroyed, since you started or restarted monitoring. Figure 3–11 shows the View Objects tab.
Figure 3–11: Dynamic Object Tracking dialog box with View Objects tab
![]()
While the Debugger is monitoring active object instances, the following information is displayed in the active object instances list box:
- The object type.
- The name of the procedure file in which the dynamic object was created.
- The line number at which the object was created. This is based on the Debugger listing file.
- Any relevant attribute values (such as the value of the object’s
Nameattribute) or other object-specific information.If an active object instance entry for any of the following object types is marked as “Delete Pending,” execution of the
DELETEOBJECTstatement for that object instance has been delayed for some reason:Each time the application creates a dynamic object instance, the Debugger refreshes the list of active object instances by:
Only objects of the types you selected in the Control Monitoring tab appear in the object type selection list. You can filter the object instances that appear in the active object instances list box by selecting one or more object types in the object type selection list and choosing the Filter List button. Then, only instances of the types you select appear in the list. Use the Show Complete List button to cancel any filter settings and display the complete list of objects.
While monitoring, you can clear the current list of active object instances and restart monitoring in one of two ways:
- By choosing the Restart Monitoring button.
Note: Clearing the current list of active object instances does not destroy the actual object instances; it simply clears the current list that appears in the active object instances list box.- By first choosing the Stop Monitoring button, and then choosing the Start Monitoring button.
To monitor a different set of object types, modify your selection of object types on the Control Monitoring tab and choose the Start Monitoring or Restart Monitoring button.
|
Copyright © 2005 Progress Software Corporation www.progress.com Voice: (781) 280-4000 Fax: (781) 280-4095 |